iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 15
0
自我挑戰組

golang初探系列 第 15

day15- func 函數介紹

  • 分享至 

  • xImage
  •  

func

為了完成某一個功能的語句的集合,稱為函數
在 Go 當中可以自行定義或使用系統函數
在開發階段過程當中,有些程式碼重複性高,會將這段程式碼提領出來,放置在 func
可以幫助我們提高維護性

func 聲明

可以設定多個回傳值及參數

func funcName (parameterName1 type1 , parameterName2 type2) (output1 type 1,output2 type 2){
    //重複性代碼
    // return 代表要返回的參數
    return value1,value2
}
  • funcName 函數名稱
  • parameterName1 參數1名稱
  • type1 參數1類型
  • parameterName2 參數2名稱
  • type2 參數2類型

example

當返回值多值,接收時希望忽略某個返回值,使用 _符號表示占位忽略

package main

import "fmt"

func main() {
	a := 10
	b := 50
	sum := sum(a, b)
	fmt.Printf("a + b 總值為%d\n", sum)
	a, b = swap(a, b)
	fmt.Printf("a 和 b 進行互換 a = %d , b = %d ", a, b)
	var c int
	//使用 _ 忽略 result2 返回值
	c, _ = swap(a, b)
	fmt.Println(c)

}
func sum(val1 int, val2 int) (sum int) {
	return val1 + val2
}

//參數類型一直可以簡寫 parameterName1 , parameterName2 type
func swap(val1, val2 int) (result1, result2 int) {
	return val2, val1
}

可變參數

使用 ...type 來提供外部使用可以丟入多個參數 ( 可變參數 ),
代表可以接收多個參數
在 func 裡 agrs 為 []int 類型

package main

import "fmt"

func main() {
	fmt.Printf("1 + 3 + 7 + 9 總值為:%d", sumTotal(1, 3, 5, 7, 9))

}
func sumTotal(nums ...int) (sum int) {
	sum = 0
	//這邊 for 循環之後章節才會詳細討論
	for i := 0; i < len(nums); i++ {
		sum += nums[i]
	}
	return sum
}

Call By Value 及 Call By Reference

Call By Value

屬於值傳遞的有:

  • int
  • float
  • string
  • bool
  • array
  • struct
package main

import (
	"fmt"
)

func main() {
	arr := [...]int{1, 44, 62, 9}
	fmt.Printf("調用前%v\n", arr)
	test1(arr)
	fmt.Printf("調用後%v\n", arr)
}

func test1(arr [4]int) {
	arr[0] = 100

}

Call By Reference

  • slice
  • map
  • chan
package main

import (
	"fmt"
)

func main() {
	arr := make([]int,5)

	fmt.Printf("調用前%v\n", arr)
	test1(arr)
	fmt.Printf("調用後%v\n", arr)
}

func test1(arr []int) {
	arr[0] = 100

}


上一篇
day14-Map 字典類型介紹
下一篇
day16-Struct 結構介紹(一)
系列文
golang初探30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言